package com.duoduo.sort;

/**
 * @program: algorithm
 * @description: 排序数组912
 * @author: chaidl  ！
 * @create: 2022-04-26 09:06
 */
public class 排序数组912 {
	public final static int[] SRC
			= {5,2,3,1};
	public static void main(String[] args) {
		sortArray3(SRC);
	}
	/**
	 * 冒泡排序
	 *
	 * @param nums
	 * @return
	 */
	public int[] sortArray1(int[] nums) {
		if (nums == null) {
			return null;
		}
		int length = nums.length;
		for (int i = 0; i < length; i++) {
			for (int j = 0; j < length - 1; j++) {
				if (nums[j + 1] < nums[j]) {
					int tmp = nums[j];
					nums[j] = nums[j + 1];
					nums[j + 1] = tmp;
				}
			}
		}
		return nums;
	}
	
	/**
	 * 选择排序
	 *
	 * @param nums
	 * @return
	 */
	public int[] sortArray2(int[] nums) {
		if (nums.length == 0) {
			return null;
		}
		for (int i = 0; i < nums.length; i++) {
			int minIndex = i;
			for (int j = i; j < nums.length; j++) {
				if (nums[j] < nums[minIndex]) {
					minIndex = j;
				}
			}
			//	到这里说明第一次找到了最小的值。接下来只需要交换位置就可以了
			int tmp = nums[minIndex];
			nums[minIndex] = nums[i];
			nums[i] = tmp;
		}
		return nums;
	}
	
	/**
	 * 插入排序
	 *
	 * @param nums
	 * @return
	 */
	public static int[] sortArray3(int[] nums) {
		if (nums.length == 0) {
			return null;
		}
		int currentValue;
		for (int i = 0; i < nums.length-1; i++) {
			//	默认第一个数据总是排好序的。先拿出来
			int preIndex=i;
			currentValue=nums[i+1];
			while (preIndex>=0 && currentValue<nums[preIndex]){
				nums[preIndex+1]=nums[preIndex];
				preIndex--;
			}
			nums[preIndex+1]=currentValue;
		}
		return nums;
	}
}
